<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>构造函数</title>
</head>
<body>
    <script>
        // 我们为什么需要使用构造函数
        // 就是我们前面两种创建对象的方式一次只能创建一个对象
        // 我们一次创建一个对象, 里面很多属性和方法是大量相同的, 我们只能复制
        // 因此利用函数的方法, 重复这些相同的代码, 我们就把这个函数称为构造函数
        // 这个函数不一样, 里面封装的对象
        // 构造函数就是把我们对象里面的 相同的属性和方法抽象出来封装到函数里面
        /*
            构造函数: 是一种特殊函数, 主要用来初始化对象, 即为对象成员变量赋予初始值, 它总与new运算符一起使用, 我们可以把对象中一些公共的属性和方法抽取出来, 然后封装这个函数里面.
        */
       // 利用构造函数创建对象
       // 创建四大天王的对象, 相同属性, 相同方法
       // 构造函数的语法格式
    //    function 构造函数名() {
    //         this.属性 = 值
    //         this.方法 = function(){}
    //    }
        function Star(uname, age, sex) { 
            this.name = uname;
            this.age = age;
            this.sex = sex;
            this.sing = function(word) {
                console.log('冷冷的' + word + '在脸上胡乱的拍');
            };
            };
        var ldh = new Star('刘德华', 19, '男');
        console.log(ldh.name);
        console.log(ldh.sex);
        ldh.sing('冰冰雨')
        // 1.构造函数名字首字母要大写
        // 2.我们构造函数不需要return就可以返回结果
        // 3.我们调用构造函数 必须使用new
        // 4.我们只要new Star() 调用函数就创建一个对象 ldh()

    </script>
</body>
</html>